package Experimentos;

import comun.Fichero;
import esc1Caso1.*;
import comun.GeneradorProblemas;

import aima.search.framework.Problem;
import aima.search.framework.Search;
import aima.search.framework.SearchAgent;
import aima.search.informed.HillClimbingSearch;
import IA.DistFS.Servers.WrongParametersException;

public class Main2 {

    public static void main(String [] args){
    	long tiempoIni = System.currentTimeMillis();
    	int numPruebas = 50;
    	System.out.println("menorTiempo  Aleatorio");
        GeneradorProblemas generador = new GeneradorProblemas();
        try {
        	Fichero f2 = new Fichero("fichero2");
        	for(int i = 0; i < numPruebas; i++){
        		//Genera el estado inicial
                generador.generarExperimento1();
                Estado caso1 = new Estado(generador.getPeticiones(), generador.getServidores(), generador.getNumServidores());
                Estado caso1b = new Estado(generador.getPeticiones(), generador.getServidores(), generador.getNumServidores());
                caso1.generarEstadoInicialAleatorio();
                caso1b.generarEstadoInicialMenorTiempo();
                
                //Crea y resuelve el problema
                Problem problema = new Problem(caso1, new FuncionSuccesores(false), new EsEstadoFinal() , new Heuristico());
                Search algoritmo = new HillClimbingSearch();
                SearchAgent agent = new SearchAgent(problema, algoritmo);
                
                //Crea y resuelve el problema
                Problem problemab = new Problem(caso1b, new FuncionSuccesores(false), new EsEstadoFinal() , new Heuristico());
                Search algoritmob = new HillClimbingSearch();
                SearchAgent agentb = new SearchAgent(problemab, algoritmob);
                
                Estado resultado = (Estado) algoritmo.getGoalState();
                Estado resultadob = (Estado) algoritmob.getGoalState();
                System.out.println(resultadob.getTiempoMaximo() +" "+ resultado.getTiempoMaximo());
                
                //Escribir en fichero
                f2.escribe(String.valueOf(resultadob.getTiempoMaximo()));
        	}
            f2.cierraF();
            System.out.println("FIN");
        } catch (WrongParametersException e) {
                e.printStackTrace();
        } catch (Exception e) {
			e.printStackTrace();
		}
            
            
    }
}
